package models

import (
	"srv/basic/config"
)

type Order struct {
	//gorm.Model
	Id         int64   `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UserId     int64   `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;" json:"user_id"`                                   // 用户id
	DriverId   int64   `gorm:"column:driver_id;type:bigint UNSIGNED;comment:司机id;not null;default:0;" json:"driver_id"`                     // 司机id
	Num        string  `gorm:"column:num;type:varchar(255);comment:订单编号;not null;" json:"num"`                                              // 订单编号
	Origin     string  `gorm:"column:origin;type:varchar(255);comment:起点;not null;" json:"origin"`                                          // 起点
	End        string  `gorm:"column:end;type:varchar(255);comment:终点;not null;" json:"end"`                                                // 终点
	Model      string  `gorm:"column:models;type:varchar(255);comment:车型;not null;" json:"model"`                                           // 车型
	Kilometers int64   `gorm:"column:kilometers;type:int UNSIGNED;comment:公里数;not null;" json:"kilometers"`                                 // 公里数
	Price      float64 `gorm:"column:price;type:decimal(10, 2);comment:价格;not null;" json:"price"`                                          // 价格
	State      int64   `gorm:"column:state;type:int UNSIGNED;comment:状态 1-待接单 2-已接单 3-已核实用户 4-订单结束 5-已付款;not null;default:1;" json:"state"` // 状态 1-待接单 2-已接单 3-已核实用户 4-订单结束 5-已付款

}

func (o *Order) TableName() string {
	return "order"
}

// 订单展示
func (o *Order) OrderList() (OrderList []*Order, err error) {
	err = config.DB.Find(&OrderList).Error
	return
}

// 用户查看订单
func (o *Order) OrderUserList() (OrderList []*Order, err error) {
	err = config.DB.Where("state = ?", o.State).Find(&OrderList).Error
	return
}

// 创建订单
func (o *Order) OrderAdd() error {
	return config.DB.Create(&o).Error
}

// 订单详情
func (o *Order) OrderDetails() error {
	return config.DB.Where("id = ?", o.Id).Limit(1).Find(&o).Error
}

// 订单id
func (o *Order) GetOrderId(id int) error {
	return config.DB.Where("id = ?", id).Limit(1).Find(&o).Error
}

// 修改订单状态
func (o *Order) OrderUpdate(id int) error {
	return config.DB.Model(&Order{}).Where("id = ?", id).Update("state", o.State).Error
}

// 修改订单状态已完成
func (o *Order) OrderUpdateFinish() error {
	return config.DB.Model(&Order{}).Where("id = ?", o.Id).Update("state", o.State).Error
}

// 修改订单司机id状态
func (o *Order) OrderUpdates(id int) error {
	return config.DB.Model(&Order{}).Where("id = ?", id).Update("driver_id", o.DriverId).Error
}

// 车型价格
func ModelPrice(model string) int {
	var price int
	switch model {
	case "经济型":
		price = 20
	case "舒适型":
		price = 40
	case "商务型":
		price = 60
	case "豪华型":
		price = 80
	}
	return price
}
